Lernziele
Wiederholungsfragen
Ein Klick auf den roten Hyperlink zeigt die richtige Lösung.
Was ist richtig? Als Gültigkeitsbereich bezeichnet man ...
Was ist richtig? Ein Konstruktor ist ...
Sei cEintrag eine Klasse. Wie viele Instanzen dieser Klasse existieren, nachdem die folgende Test-Prozedur ausgeführt wurde?
Private E1 As cEintrag Sub Test() Dim E2 As cEintrag Set E1 = New cEintrag Set E2 = New cEintrag Set E1 = E2 End Sub
Sei cEintrag eine Klasse. Wie viele Instanzen dieser Klasse existieren, nachdem die folgende Test-Prozedur ausgeführt wurde?
Private E1 As cEintrag Sub Test() Dim E2 As cEintrag Set E1 = New cEintrag Set E1 = E2 Set E2 = Nothing End Sub
Welche Aussage ist falsch ?
Ein Klassenmodul enthalte die folgenden Programmzeilen. Welche Aussage ist richtig ?
Private strName As String Public Property Get Name() As String strName = Name End Property
Vertiefungsfragen
Bevor Sie mit der eigentlichen Aufgabe beginnen, sollten Sie sich nochmals damit
vertraut machen, wie Instanzen einer Klasse erstellt und gelöscht werden. Lösen Sie hierfür die
Aufgabe
Instanzen erstellen und
löschen.
Schreiben Sie das Programm Telefonverzeichnis zu einem Programm für die Verwaltung von Geburtstagen um. Die Arbeitsmappe GeburtstageSkelett.xls enthält ein Programmskelett, das aus dem Telefonverzeichnis-Projekt erstellt wurde. Das folgende Bild zeigt die neue Benutzerschnittstelle:
Laden Sie die Arbeitsmappe, und studieren Sie den vorhandenen Programmcode.
Implementieren Sie die Klasse cEintrag. Neu sollen die Namen und Geburtsdaten (statt Telefonnummern) von Freunden und Bekannten gespeichert werden. Das Klassenmodul enthält bereits zwei Variablen dafür. Implementieren Sie die Property-Prozeduren für den Zugriff auf die Eigenschaften.
Über eine schreibgeschützte Eigenschaft soll man das Alter einer Person abfragen können. Verwenden Sie hierfür die Funktion DateDiff() (siehe Hilfe).
| Hinweis: | 'Date' ist ein Datentyp zum Speichern von Daten und Zeiten. Die
systemdefinierte Funktion Now() gibt das aktuelle Datum in diesem Format zurück. Year()
extrahiert aus einem Datum das Jahr als ganze Zahl. DateDiff() berechnet die Differenz
zwischen zwei Daten. Zum Entfernen von Leerzeichen in Zeichenketten bietet VBA die Trim()-Funktion an. Andere wichtige Zeichenkettenfunktionen sind Left(), Mid(), Right() und Len(). |
Wir ändern die Verwaltung des Verzeichnisses. Die Ereignisprozedur suchen_Klick suchte im Telefonverzeichnis sequentiell. Im Programmskelett wurde der Suchalgorithmus in eine Funktion suche() ausgelagert und als binäre Suche neu implementiert.
Studieren Sie die Ereignisprozedur suchen_Klick, und fügen Sie die fehlende Zeile ein.
| Fragen: | Was ist der Vorteil, wenn man anstatt der sequentiellen die binäre Suche
verwendet? Arbeitet der implementierte Algorithmus iterativ oder rekursiv? |
Die Ereignisprozedur hinzufügen_Klick konnte neue Einträge bisher einfach hinten im Verzeichnis anhängen. Implementieren Sie die Prozedur nun neu so, dass neue Einträge sortiert eingefüllt werden.
Die Ereignisprozedur auflisten_Klick kann einfach alle Elemente des Verzeichnisses der Reihe nach ausgeben, da das Verzeichnis bereits sortiert ist. Implementieren Sie die Prozedur neu.